

public class PerfectBinarySortSolution {

    private static int binarySort(int [] a , int target){
        // 几种出题情况 前提有序数组
        // 1.在数组中找到第一个target,返回下标
        // 2.在数组中找到最后一个target,返回下标
        // 3.找到小于target的最后一个元素，返回下标
        // 4.找到大于target的第一个元素，返回下标
        int left = -1;
        int right = a.length ;
        while(left + 1 < right){
            int mid = (left + right) >> 1;
            //---------------------------------------
            //1.在数组中找到第一个target,返回下标
            /*if(a[mid] >= target ){
                right = mid;
            }else{
                left = mid;
            }*/
            //--------**************************------


            //2.在数组中找到最后一个target,返回下标
            //---------------------------------------
            /*if(a[mid]<= target){
                left = mid;
            }else{
                right = mid;
            }*/
            //--------**************************------

            //3.找到小于target的最后一个元素，返回下标
            //---------------------------------------
            /*if(a[mid]< target){
                left = mid;
            }else{
                right = mid;
            }*/
            //--------**************************------

            //---------------------------------------
            //4.找到大于target的第一个元素，返回下标
            /*if(a[mid] > target ){
                right = mid;
            }else{
                left = mid;
            }*/
            //--------**************************------
        }
        // 1.在数组中找到第一个target,返回下标
        //return right;

        // 2.在数组中找到最后一个target,返回下标
        // return left;

        // 3.在数组中找到最后一个target,返回下标
        // return left;

        // 4.在数组中找到第一个target,返回下标
        //return right;

        return 0;
    }

}
